#ifndef ARRAYITERADOR_CPP
#define ARRAYITERADOR_CPP

#include "ArrayIterador.h"
#include "Array.h"

template <class T>
ArrayIterador<T>::ArrayIterador(const Array<T>& iterable)
{
	this->iterable = iterable;
	Reiniciar();
}

template <class T>
ArrayIterador<T>::~ArrayIterador()
{
}


template <class T>
void ArrayIterador<T>::Reiniciar()
{
	posicion = 0;
}

template <class T>
bool ArrayIterador<T>::HayElemento() const
{
	return posicion < iterable.Largo();
}

template <class T>
const T& ArrayIterador<T>::ElementoActual() const
{
	return iterable[posicion];
}

template <class T>
void ArrayIterador<T>::Avanzar()
{
	assert(HayElemento());
	posicion++;
}

#endif